package com.itsense.stock.service;

import com.itsense.stock.pojo.domain.*;
import com.itsense.stock.vo.resp.PageResult;
import com.itsense.stock.vo.resp.R;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface StockService {
    /**
     * 获取大盘最新数据
     * @return
     */
    R<List<InnerMarketDomain>> getInnerMarketInfo();

    R<List<StockBlockDomain>> getStockBlockInfo();

    R<PageResult<StockUpDownDomain>> getStockInfoByPage(Integer page, Integer pageSize);

    R<List<StockUpDownDomain>> getStockInfoIncrease();

    R<Map<String, List>> getStockUpDownCount();

    /**
     * 导出指定页码的最新股票信息
     * @param page
     * @param pageSize
     * @param response
     */
    void exportStockUpDownInfo(Integer page, Integer pageSize, HttpServletResponse response);

    /**
     * 返回T日和T-1日的每分钟交易量的统计
     * @return
     */
    R<Map<String, List>> getComparedStockTradeAmt();

    /**
     * 获取股票的每日涨幅范围数据(A股)
     * @return
     */
    R<Map> getIncreaseRangeInfo();

    /**
     * 获取指定股票的T日的分时数据
     * @param stockCode
     * @return
     */
    R<List<Stock4MinuteDomain>> getStockScreenTimeSharing(String stockCode);

    /**
     * 统计指定股票的日K数据
     * @param stockCode
     * @return
     */
    R<List<Stock4EvrDayDomain>> getStockScreenDKLine(String stockCode);

    /**
     * 获取国外大盘的最新数据
     * @return
     */
    R<List<OuterMarketDomain>> getOuterMarketInfo();

    /**
     * 返回模糊搜索的股票数据
     * @param searchStr
     * @return
     */
    R<List<StockSearchResultDomain>> getStockSearchResult(String searchStr);

    /**
     * 通过股票编码返回对应的股票的业务信息
     * @param code
     * @return
     */
    R<StockDescribeDomain> getStockDescribe(String code);

    /**
     * 通过股票编码返回对应的周K线
     * @param code
     * @return
     */
    R<List<Stock4EvrWeekDomain>> getStockWKLine(String code);

    /**
     * 通过股票编码返回对应的股票实时数据
     * @param code
     * @return
     */
    R<StockRt> getStockScreenRtInfo(String code);

    /**
     * 通过股票编码返回个股行情数据
     * @param code
     * @return
     */
    R<List<Map<String, Object>>> getStockTradeInStatement(String code);
}
